package cap4;

class  Inventario {
	//Atributos de Instancia
	   private Articulo[] T;
	   private int cant;
	/*Constructor 
	Crea una Coleccion con capacidad para 
	max elementos*/
	public  Inventario(int max) {
		T= new Articulo [max];
	     cant = 0;}
	//Comandos
	public boolean alta  (Articulo elem) {
	/*Inserta un elemento al final de la Coleccion, requiere que no exista un artículo con el mismo código*/
	  boolean exito=false;
	  if (cant<T.length) {
	       T[cant++] = elem;
	       exito = true;
	  } 
	  return exito;}
	public void baja  ( Articulo c){
	/*Busca un artículo equivalente a c y si existe copia el último en esa posición*/
	  boolean esta = false; int i= 0;
	  while (!esta && i <  cantArt())
	     if (T [i].equals(c)) esta = true;
	     else i++;
	  if (esta) {
	    cant--;
	    T[i] = T[cant];
	    T [cant] = null;}}
	public void depreciarRubro(int r, float p){
	/*modifica el valor de cada artículo del rubro r decrementándolo de acuerdo al porcentaje p.*/
	float v;
	for (int i = 0; i <  cantArt() ; i++)
	   if(T[i].obtenerRubro() == r){
	     v = T[i].obtenerValor();
	     T[i].establecerValor(v*(1-p));} 
	}
	//Consultas
	public int  cantArt () {
	     return cant;} 
	public boolean estaLleno() {
	     return cant == T.length;}
	public Articulo recuperar (int c){
	//Retorna el artículo con el código dado
	  boolean esta = false;
	  int i;
	  for (i = 0; !esta && i <  cantArt() ; i++){
	     esta = T[i].obtenerCodigo() == c; }
	  if (esta) return T[i];
	  else return null;}
	public boolean pertenece (int c){
	/*Retorna verdadero si un elemento de la Coleccion tiene el código c*/
	  boolean esta = false;
	  for (int i = 0; !esta && i <  cantArt() ; i++)
	     esta = T[i].obtenerCodigo() == c; 
	  return esta;}
	public boolean pertenece (Articulo c){
	/*Decide si algún elemento de la colección es equivalente a c*/
	  boolean esta = false;
	  for (int i = 0; !esta && i <  cantArt() ; i++)
	     esta = T[i].equals(c);  
	  return esta;}
	public void unAnio(int a){
	/*genera un objeto de clase Inventario solo con los objetos que corresponden al año a. */
	Inventario n = new Inventario(cantArt());
	for (int i = 0; i <  cantArt() ; i++)
	   if(T[i].obtenerAnio() == a){
	     n.alta(T[i]);}}
	}
